using System;
using System.Collections.Generic;
using System.Text;

namespace Rensselaer_Event_Finder
{
    public class Location
    {
        private int id;
        private string name;
        private string description;
        private string website;
	    private string phone;
	    private string fax;
	    private string email;
        private string streetAddress1;
        private string streetAddress2;
        private string city;
        private string state;
        private string zipcode;
        private string image_url;
	    private IList<Event> events;
        private IList<LocationRating> ratings;
        private IList<LocationComment> comments;
	    private IList<Category> categories;
        private DateTime createdTime;
        private DateTime editedTime;


        public Location()
        {
            events = new List<Event>();
            ratings = new List<LocationRating>();
            comments = new List<LocationComment>();
            categories = new List<Category>();
        }

        public virtual int Id
        {
            get { return id; }
            set { id = value; }
        }

        public virtual string Name
        {
            get { return name; }
            set { name = value; }
        }

        public virtual string Image_url
        {
            get { return image_url; }
            set { image_url = value; }
        }

        public virtual string Description
        {
            get { return description; }
            set { description = value; }
        }

        public virtual string Website
        {
            get { return website; }
            set { website = value; }
        }

        public virtual string Phone
        {
            get { return phone; }
            set { phone = value; }
        }

	   public virtual string Fax
        {
            get { return fax; }
            set { fax = value; }
        }

	   public virtual string Email
        {
            get { return email; }
            set { email = value; }
        }

	   public virtual string StreetAddress1
        {
            get { return streetAddress1; }
            set { streetAddress1 = value; }
        }

	   public virtual string StreetAddress2
        {
            get { return streetAddress2; }
            set { streetAddress2 = value; }
        }

	   public virtual string City
        {
            get { return city; }
            set { city = value; }
        }

	   public virtual string State
        {
            get { return state; }
            set { state = value; }
        }

	   public virtual string Zipcode
        {
            get { return zipcode; }
            set { zipcode = value; }
        }

        public virtual IList<Event> Events
        {
            get { return events; }
            set { events = value; }
        }
    
        public virtual void AddEvent(Event myEvent)
        {
            events.Add(myEvent);
        }

        public virtual IList<LocationRating> Ratings
        {
            get { return ratings; }
            set { ratings = value; }
        }
    
        public virtual void AddRating(LocationRating rating)
        {
            ratings.Add(rating);
        }

        public virtual IList<LocationComment> Comments
        {
            get { return comments; }
            set { comments = value; }
        }
    
        public virtual void AddComment(LocationComment comment)
        {
            comments.Add(comment);
        }

        public virtual IList<Category> Categories
        {
            get { return categories; }
            set { categories = value; }
        }
    
        public virtual void AddCategory(Category category)
        {
            categories.Add(category);
        }
        public virtual DateTime CreatedTime
        {
            get { return createdTime; }
            set { createdTime = value; }
        }

        public virtual DateTime EditedTime
        {
            get { return editedTime; }
            set { editedTime = value; }
        }

    }

}
